package com.example.lists

import android.content.Context
import android.widget.Toast
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.wrapContentWidth
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp


//首先我们需要创建一个数据集，包含了常用水果名
val fruits = arrayOf("Apple", "Apricot", "Almond", "Banana", "Betelnut", "Cherry", "Damson")

//接下来需要我们声明列表项 FruitsRow 和点击事件 fruitClick
//FruitsRow 是一个高阶函数，它接受两个参数，一个是水果本身，另一个是点击事件函数
//fruitClick 是一个Lambda 表达式，我们以此作为 FruitsRow 点击事件参数的值
@Composable
fun FruitsRow(
    item: String,
    clickEvent: () -> Unit
) {
    Text(
        text = item,
        modifier = Modifier
            .fillMaxWidth()
            .clickable(onClick = clickEvent)
            .wrapContentWidth()
            .height(50.dp)
    )
}

val fruitClick = { fruit : String , context : Context ->
    Toast.makeText(context , fruit , Toast.LENGTH_SHORT).show()
}

//最后使用 LazyColumn 创建列表即可，这样我们点击 item 的时候便会显示对应的水果名
@Composable
fun ListClickEventDemo(){
    val context = LocalContext.current
    LazyColumn(){
        items(fruits){ fruit ->
            FruitsRow(item = fruit , clickEvent = { fruitClick(fruit , context) })
        }
    }
}
